/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */
package fr.generali.accueilclient.client.assembler.output;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

import fr.generali.accueilclient.client.om.ICoordonneeBancaire;
import fr.generali.accueilclient.client.om.impl.CoordonneeBancaire;
import fr.generali.refservcommuns.rce.servperscom.pty.referencebancaire.DtoCompteBancaire;
import fr.generali.refservcommuns.rce.servperscom.pty.referencebancaire.DtoDossierCoordonneesBancaires;

/**
 * @author selrhazala
 */
@Component("dtoDossierCoordonneesBancaires2ListCoordonneeBancaireConverter")
public class DtoDossierCoordonneesBancaires2ListCoordonneeBancaireConverter implements
    Converter<List<DtoDossierCoordonneesBancaires>, List<ICoordonneeBancaire>> {

    /**
     * L'assembleur de rib
     */
    @Autowired
    @Qualifier("dtoCompteBancaire2CoordonneesBancairesConverter")
    private Converter<DtoCompteBancaire, ICoordonneeBancaire> dtoCompteBancaire2CoordonneesBancairesConverter;

    /**
     * {@inheritDoc}
     */
    public List<ICoordonneeBancaire> convert(List<DtoDossierCoordonneesBancaires> input) {
        Boolean isPrincipal = true;
        List<ICoordonneeBancaire> listeRib = new ArrayList<ICoordonneeBancaire>();
        ICoordonneeBancaire rib = null;
        for (DtoDossierCoordonneesBancaires dossier : input) {
            // Comptes principaux
            for (DtoCompteBancaire compteBancaire : dossier.getComptePrincipal()) {
                rib = new CoordonneeBancaire();
                rib = dtoCompteBancaire2CoordonneesBancairesConverter.convert(compteBancaire);
                if (isPrincipal) {
                    rib.setPrincipal(true);
                    isPrincipal = false;
                }
                listeRib.add(rib);
            }
            // Comptes secondaires
            for (DtoCompteBancaire compteBancaire : dossier.getCompteSecondaire()) {
                rib = new CoordonneeBancaire();
                rib = dtoCompteBancaire2CoordonneesBancairesConverter.convert(compteBancaire);
//                if (isPrincipal) {
//                    rib.setPrincipal(true);
//                    isPrincipal = false;
//                }
                listeRib.add(rib);
            }
        }
        return listeRib;
    }

}
